package bsh.dyn;

/**
 * A {@link Parameter} that is declared as a methods parameter
 * 
 * @author takeshi
 */
public interface DeclaredParameterType extends Parameter {

    /**
     * If this parameter accepts null. Currently, it is true if it's not a primitive type
     * 
     * @return boolean
     */
    boolean acceptsNull();

    /**
     * If this type is an array, return the component type of the array. Otherwise, it returns null
     * 
     * @return {@link DeclaredParameterType}
     */
    DeclaredParameterType getComponentType();

    /**
     * returns true if this parameter type is an array
     * 
     * @return boolean
     */
    boolean isArray();

}
